<?php

namespace app\admin\model;

use think\Model;
use traits\model\SoftDelete;

class AdminUser extends Model
{
    use SoftDelete; //软删除功能，实际项目中对数据频繁使用删除操作会导致性能问题
    protected $deleteTime = 'delete_time';  //软删除字段,ThinkPHP5的软删除功能使用时间戳类型（数据表默认值为Null）
    protected $type = ['delete_time'  =>  'datetime'];  //写入和读取数据的时候都会自动处理成时间字符串Y-m-d H:i:s的格式。

    //修改器，密码实际保存到数据库中的时候会自动加密
    public function setPasswordAttr($value)
    {
        return password_hash($value, PASSWORD_DEFAULT);
    }
    //管理员新增
    public function _save()
    {
        $data = input('post.');
        $data['add_time'] = date('Y-m-d H:i:s');
        if($this->validate('AdminUser.add')->allowField(true)->save($data) !== false){
            return ajax_return(1,'新增成功','index');
        }else{
            return ajax_return(0,$this->getError());
        }
    }
    //管理员修改
    public function _update()
    {
        $data = input('post.');
        if($data['password'] && $data['confirm_password']){
            $filed = ['username','status','name','group_id','password'];
        }else{
            $filed = ['username','status','name','group_id'];
        }
        if($this->validate('AdminUser.edit')->allowField($filed)->save($data,['id'=>$data['id']]) !== false){
            return ajax_return(1,'更新成功','index');
        }else{
            return ajax_return(0,$this->getError());
        }
    }
    /**
     * 软删除操作
     * @param mixed $id 待删除列表主键
     * @param bool $force   是否真实删除
     * @return array
     */
    public function _delete($id,$force = false)
    {
        $res = $this::destroy($id,$force);  //返回删除成功数（int）
        if($res > 0){
            return ajax_return(1,'删除成功');
        }else{
            return ajax_return(0,$this->getError());
        }
    }
    //本人修改密码
    public function updatePassword($data)
    {
        $admin_id    = session('admin_id');//当前账号id
        $res = $this->where(['id'=>$admin_id])->value('password');  //当前密码
        if(password_verify($data['old_password'],$res)){
            if($this->save(['password'=>$data['password']],['id'=>$admin_id]) !== false){   //修改器自动加密
                return ajax_return(1,'修改成功,请重新登录','hslogin/logout');
            }else{
                return ajax_return(0,'修改失败,请重试');
            }
        }else {
            return ajax_return(0,'原密码不正确');
        }
    }
}